home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / self / contrib.lha / contrib / SelfNews / fabrication.self next >
Text File  |  1993-07-24  |  3KB  |  110 lines

  1. " File fabrication.self
  2.   created by Ian Wilkinson on Thu Sep 17 14:32:47 1992
  3.  
  4.   Copyright (c) Canon Research Centre Europe, 1992.
  5.   All rights reserved."
  6.  
  7. traits applications visualiser _AddSlotsIfAbsent: ( | ^ fabrication = () | )
  8. traits fabrication _Define: ( |
  9.     _ parent* = traits clonable.
  10.  
  11.     ^ construction = ( 
  12.     representationObject: postScriptMachine fashionReprObject.
  13.     postScriptMachine sendPS: appearance.
  14.     representationBehaviour: postScriptMachine fashionAspects: aspects.
  15.     postScriptMachine sendPS: (representationObject printString,
  16.         ' ', representationBehaviour printString, ' ', instantiate) asString
  17.     ).
  18.  
  19.     ^ affect: action = ( 
  20.     postScriptMachine affect: representationObject With: action
  21.     ).
  22.  
  23.     ^ behaviourFor: obj On: evt Is: action = (
  24.     postScriptMachine behaviourFor: obj
  25.                        WithReprObj: representationObject
  26.                     On: (representationBehaviour + evt) - 1
  27.                     Is: action
  28.     )
  29. | )
  30.  
  31. prototypes visualiser _AddSlotsIfAbsent: ( | ^ fabrication = () | )
  32. fabrication _Define: ( |
  33.     ^ parent* <- traits fabrication.
  34.  
  35.     ^ representationObject.
  36.     ^_ representationBehaviour.
  37.     ^ aspects     <- 0.
  38.     ^ appearance  <- ''.
  39.     ^ instantiate <- ''
  40. | )
  41.  
  42. traits applications visualiser _AddSlotsIfAbsent: ( | ^ fabricateTEdit = () | )
  43. traits fabricateTEdit _Define: ( |
  44.     _ parent* = traits clonable.
  45.  
  46.     ^ on: tEditView Media: w = ( copy initialize: tEditView Media: w ).
  47.  
  48.     _ initialize: tEditView Media: w = (
  49.     media: w.
  50.     accessibleMedia: postScriptMachine fashionReprObject.
  51.     representationObject: tEditView.
  52.     media send: ('
  53.         currentfile ', accessibleMedia printString,
  54.         ' shareddict /MessageMachine get setfileinputtoken ',
  55.         representationObject printString, ' getfileinputtoken
  56.     ') asString.
  57.     objectBehaviour: dictionary copyRemoveAll.
  58.     self
  59.     ).
  60.  
  61.     ^ construction = (
  62.     listener: (process copySend:
  63.         message copy receiver: self Selector: 'mediaTalk') resume
  64.     ).
  65.  
  66.     ^ mediaTalk = ( | postScriptInput |
  67.     postScriptInput:
  68.         unixFile copyFd: media fileDescriptor Name: 'media'.
  69.     [
  70.         postScriptInput suspend.
  71.         media messageOnWire ifTrue: [ messageTarget ].
  72.         process this yield
  73.     ] loop
  74.     ).
  75.  
  76.     _ messageTarget = ( | tg |
  77.     [
  78.         tg: media peekTag.
  79.         (tg < 0) ifTrue: [ warning: 'Media difficulty in tEdit.' ].
  80.         (tg = 0) 
  81.         ifTrue: [ "" ]
  82.          False: [
  83.             (objectBehaviour includesKey: tg)
  84.             ifTrue: [ (objectBehaviour at: tg) send ]
  85.              False: [ media readTag ]
  86.          ]
  87.     ] untilFalse: [ media messageOnWire ]
  88.     ).
  89.  
  90.     ^ behaviourFor: obj On: evt Is: action = (
  91.     objectBehaviour at: evt Put: message copy receiver: obj Selector: action
  92.     )
  93. | )
  94.  
  95. prototypes visualiser _AddSlotsIfAbsent: ( | ^ fabricateTEdit = () | )
  96. fabricateTEdit _Define: ( |
  97.     ^ parent* <- traits fabricateTEdit.
  98.  
  99.     ^ representationObject.
  100.     ^_ representationBehaviour.
  101.     ^ aspects     <- 0.
  102.     ^ appearance  <- ''.
  103.     ^ instantiate <- ''.
  104.     ^ media.
  105.     ^ accessibleMedia.
  106.     "_" listener.
  107.     _ objectBehaviour
  108. | )
  109.  
  110.